namespace TreeViewDemo;

public class Starter
{   
    //如果保留App.xaml默认生成的Main会和自定义Main冲突，需要手动指定入口
    //<StartupObject>TreeViewDemo.Starter</StartupObject>
    //编译器检测到手动Main后，会将其设为真正的程序入口点，而不是生成默认的Main
    //WPF需要[STAThread]属性，因为它使用单线程单元模型
    [STAThread]
    public static void Main()
    {
        // 创建TreeViewDemo.App实例后调用Run(),从而绕过了自动生成的App.xaml流程
        var app = new TreeViewDemo.App();
        //InitializeComponent()方法主要负责解析和加载XAML文件，将声明式的UI定义转换为实际的.NET对象。
        //由于我们删除了默认的App.xaml，使用自定义的App.cs自然就不需要转换App.xaml了
        //启动Dispatcher消息循环
        app.Run();
        //删除App.xaml代表整个应用启动与资源管理全部改用纯C#代码，虽然灵活，但需要手动处理资源字典
        //然而本架构是多项目开发，实际的资源处理在其他项目中，本项目只是入口启动窗口而已
    }
}